Downstream bandwidth aware adaptive bit rate selection

ABSTRACT

A system for providing downstream bandwidth aware adaptive bit rate selection is disclosed. The system may determine a fixed bandwidth available to transmit content to a client on a second network. The system may connect to a first network, which may be configured to have no specific bandwidth constraints, to obtain the content. Once the system is connected to the first network, the system may receive, from the first network, a content segment of the content that is encoded at a first bandwidth. The first bandwidth may be less than or equal to the lesser of the fixed bandwidth available to transmit the content to the client on the second network and a first adaptive bit rate that is selected based on a congestion condition experienced on the first network. The system may then transmit the content segment at the first bandwidth to the client on the second network.

FIELD OF THE INVENTION

The present application relates to adaptive bit rate technologies andtechniques for providing bandwidth selection, and more particularly, toa system for providing downstream bandwidth aware adaptive bit rateselection.

BACKGROUND

In today's society, users are increasingly utilizing network and otherservice providers to gain access to the Internet, access softwareservices, request and receive various types of content, access softwareapplications, and perform a variety of other tasks and functions.However, some media content, services, and software applications aremuch more popular with users than other media content, services, andapplications. In order to handle large volumes of requests from usersrequesting popular content, services, and applications, contentproviders often utilize content distribution networks and systems toserve the content and provide the services to the users in a moreeffective manner. This is particularly true when high performance,reliability, scalability, and cost savings associated with distributingthe content and providing the services are important to the contentproviders that provide the content, services, and software applications.

Today, one of the techniques that is most frequently used to providecontent is adaptive bit rate streaming. With adaptive bit ratestreaming, content providers encode content at different bit rates sothat different versions of the content may be made accessible to theusers based on each of the user's available bandwidth resources. Thecontent providers typically make each of the different encoded versionsof the content accessible to network providers of the users so that theusers may obtain the appropriate version of the content via the networkproviders' networks. Content providers distributing adaptive bit ratecontent are typically on networks with no predetermined bandwidthcapacity constraints, and clients of such networks often request contentat the best rate appropriate for the congestion conditions each clientexperiences. However, the network provider networks often do not havecontrol over the content providers and often require fixed bandwidthconstraints based on the large numbers of users that the networkproviders have on their networks.

When conditions on the upstream content provider networks permit,intermediary devices requesting content for the users from the contentprovider may select the highest rate content available from the contentprovider. However, the selection of the highest rate content availablemay exceed the allocated and fixed bandwidth constraints that have beenset for the network provider networks and their users. As a result, whena device transmits the selected stream of the content at a rateexceeding the allocated and fixed bandwidth constraints associated withthe network provider network, the users receiving the streams mayexperience quality degradation when accessing the content. A possiblesolution to this problem is to set a bandwidth limit on the encoder and,in addition, utilizing buffering. However, this solution is onlyfeasible in situations where the encoder is in the control of thenetwork provider. More often than not, however, the content providerdistributes encoded content to the network provider.

SUMMARY

A system and accompanying methods for providing downstream bandwidthaware adaptive bit rate selection are disclosed. In particular, thesystem and methods may provide users with a more controlled and uniformexperience when streams of content are streamed to the users. Notably,the systems and methods may include utilizing the functionality of acontent receiver function and a content server function of a contenttransfer node that lies at a boundary of a network provider network.Additionally, the content transfer node may be an intermediary devicethat is positioned between the network provider network and a contentprovider network that is a source of the content that is to bedistributed to the users. The content receiver function of the contenttransfer node may act as an adaptive bit rate client of the contentprovider network, and may be configured to connect to the contentprovider network. The content provider network may be configured to haveno receiver-specific bandwidth constraints. Based on changing congestionconditions that the content receiver function experiences with respectto the content provider network, the content receiver function mayadjust content segment requests so as to obtain content segments encodedat a bit rate corresponding to the congestion conditions.

Also, the content server function may be configured to connect with thenetwork provider network, and may be aware of a fixed and guaranteeddownstream bandwidth that is available for transmitting the content to auser or client of the network provider network. Notably, the contentreceiver function may also be made aware of the fixed and guaranteeddownstream bandwidth that is available for transmitting the content tothe client of the network provider network. In certain embodiments, thecontent server function may transmit this information to the contentreceiver function. Then, the content receiver function, which alsofunctions as an adaptive bit rate client of the content providernetwork, may request content segments from the content provider networkthat are encoded at a bandwidth that is less than or equal to the lesserof the fixed and guaranteed bandwidth associated with the networkprovider network and the adaptive bit rate that is appropriate for thecongestion conditions that the content receiver function experienceswith respect to the content provider network. The content providernetwork may encode the content segments according to the requests fromthe content receiver function, and transmit the encoded content segmentsto the content transfer node. At this point, the content server functionmay transmit the encoded content segments over the allocated and fixedbandwidth to the users requesting the content. Based on the foregoing,the users may experience a more uniform experience when the users view,hear, or otherwise experience the content.

In one embodiment, a system for providing downstream bandwidth awareadaptive bit rate selection is disclosed. The system may include amemory that stores instructions and a processor that executes theinstructions to perform various operations of the system. The system maydetermine, by utilizing a content receiver function, a fixed bandwidthavailable to transmit content to a client on a second network. The fixedbandwidth may be determined from a content server function of thesystem. The system may connect, by utilizing the content receiverfunction, to a first network to obtain the content. The first networkmay be configured to have no specific bandwidth constraints or receiverspecific constraints. Once the system is connected to the first network,the system may receive, from the first network, a content segment of thecontent that is encoded at a first bandwidth. The first bandwidth of thecontent segment may be less than or equal to the lesser of the fixedbandwidth available to transmit the content to the client on the secondnetwork and a first adaptive bit rate that is selected based on acongestion condition that the content receiver function experiences onthe first network. After the content segment is received, the system maytransmit the content segment at the first bandwidth to the client on thesecond network.

In another embodiment, a method for providing downstream bandwidth awareadaptive bit rate selection is disclosed. The method may includeutilizing a memory that stores instructions, and a processor thatexecutes the instructions to perform the various functions of themethod. The method may include determining, by utilizing a contentreceiver function, a fixed bandwidth available to transmit content to aclient on a second network. The fixed bandwidth may be determined from acontent server function. Additionally, the method may includeconnecting, by utilizing the content receiver function, to a firstnetwork to obtain the content. The first network may be configured tonot have specific bandwidth constraints or receiver specificconstraints. Furthermore, the method may include receiving, from thefirst network, a content segment of the content that is encoded at afirst bandwidth. The first bandwidth may be less than or equal to thelesser of the fixed bandwidth available to transmit the content to theclient on the second network and a first adaptive bit rate that isselected based on a congestion condition that the content receiverfunction experiences on the first network. Moreover, the method mayinclude transmitting the content segment at the first bandwidth to theclient on the second network.

According to yet another embodiment, a computer-readable device havinginstructions for providing downstream bandwidth aware adaptive bit rateselection is provided. The computer instructions, which when loaded andexecuted by a processor, may cause the processor to perform operationsincluding: determining, by utilizing a content receiver function, afixed bandwidth available to transmit content to a client on a secondnetwork, wherein the fixed bandwidth is determined from a content serverfunction; connecting, by utilizing the content receiver function, to afirst network to obtain the content, wherein the first network has nospecific bandwidth constraints; receiving, from the first network, acontent segment of the content that is encoded at a first bandwidth,wherein the first bandwidth is less than or equal to the lesser of thefixed bandwidth available to transmit the content to the client on thesecond network and a first adaptive bit rate that is selected based on acongestion condition that the content receiver function experiences onthe first network; and transmitting the content segment at the firstbandwidth to the client on the second network.

These and other features of the systems and methods for providingdownstream bandwidth aware adaptive bit rate selection are described inthe following detailed description, drawings, and appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic diagram of a system for providing downstreambandwidth aware adaptive bit rate selection according to an embodimentof the present disclosure.

FIG. 2 is a schematic diagram of the system of FIG. 1 illustrating howbandwidth selection for content segments is performed by a contenttransfer node of the system.

FIG. 3 is a flow diagram illustrating a sample method for providingdownstream bandwidth aware adaptive bit rate selection according to anembodiment of the present disclosure.

FIG. 4 is a schematic diagram of a machine in the form of a computersystem within which a set of instructions, when executed, may cause themachine to perform any one or more of the methodologies or operations ofthe systems and methods for providing downstream bandwidth awareadaptive bit rate selection.

DETAILED DESCRIPTION OF THE INVENTION

A system 100 and accompanying methods for providing downstream bandwidthaware adaptive bit rate selection are disclosed, as shown in FIGS. 1-5.In particular, the system 100 and methods may provide users with a morecontrolled and uniform experience when streams of content are streamedto the users. Notably, the system 100 and methods may include utilizingthe functionality of a content receiver function and a content serverfunction of a content transfer node 145 that lies at a boundary of anetwork provider network, such as second network 135. In certainembodiments, the content transfer node 145 may be an intermediary devicethat is positioned between the network provider network and a contentprovider network, such as first network 115, that is a source of thecontent that is to be distributed to the users. The content receiverfunction of the content transfer node 145 may act as an adaptive bitrate client of the content provider network, and may be configured toconnect to the content provider network, which may be configured to haveno receiver-specific bandwidth constraints. Based on congestionconditions that the content receiver function experiences with thecontent provider network, the content receiver function may adjustcontent segment requests so as to obtain content segments that areencoded at a bit rate that is consistent with the congestion conditions.

Also, the content server function may be configured to connect with thenetwork provider network, and may be aware of a fixed and guaranteeddownstream bandwidth that is available for transmitting the content tothe client device 156 of the network provider network. Additionally, thecontent receiver function may also be made aware of the fixed andguaranteed downstream bandwidth that is available for transmitting thecontent to the client device 156 of the network provider network. Atthis point, the content receiver function, which functions as anadaptive bit rate client of the content provider network, may requestcontent segments from the content provider network that are encoded at abandwidth that is less than or equal to the lesser of the fixed andguaranteed bandwidth associated with the network provider network andthe adaptive bit rate that corresponds to the congestion conditions thatthe content receiver function experiences with the content providernetwork. The content provider network may encode the content segmentsbased on the requests from the content receiver function, and thentransmit the encoded content segments to the content transfer node 145.The content server function may then transmit the encoded contentsegments over the allocated and fixed bandwidth to the client device 156that is requesting the content. As a result, a user utilizing the clientdevice 156 may experience a more uniform experience when the userexperiences the content.

Referring to the drawings and in particular to FIGS. 1-2, the system 100may provide downstream bandwidth aware adaptive bit rate selection froman upstream network, such as first network 115. The system 100 may beconfigured to support, but is not limited to supporting, contentdelivery services, cloud computing services, voice-over-internetprotocol services (VoIP), software as a service (SaaS) applications,gaming applications and services, productivity applications andservices, mobile applications and services, and any other computingapplications and services. The system 100 may include one or more usersthat may utilize client device 156 to access content, data, and servicesprovided by a content source, such as content source device 102. Incertain embodiments, the client device 156 and the content source device102 may be computers, servers, mobile devices, smartphones, computertablets, or any other computing devices. In one embodiment, the contentsource device 102 may include a memory 103 that includes instructions,and a processor 104 that executes the instructions from the memory 103to perform various operations that are performed by the content sourcedevice 102. The processor 104 may be hardware, software, or acombination thereof. Similarly, the client device 156 may include amemory 157 that includes instructions, and a processor 158 that executesthe instructions from the memory 157 to perform various operations thatare performed by the client device 156. The processor 158 may behardware, software, or a combination thereof.

One or more users in the system 100 may utilize the client device 156 torequest content that is provided by the content source device 102. Incertain embodiments, the content may include, but is not limited to,audio content, video content, text content, image content, gamingcontent, web content, any other type of content, and any combinationthereof. The request for the content may be transmitted from the clientdevice 156 to a second network 135, which may be a network providernetwork of the user using the client device 156. In certain embodiments,the second network 135 may be configured to have a fixed and limitedbandwidth to each end point of the second network 135. The fixedbandwidth may be a fixed downlink (DL) bandwidth for sending contentfrom the content transfer node 145 to the second network 135, to theclient device 102, or a combination thereof. The second network 135 maybe configured to link the client device 156 with the server 150, theserver 160, the content transfer node 145, the first network 115, theserver 140, the content source device 102, the database 155, or anycombination thereof. Additionally, the second network 135 may beconfigured to transmit, generate, and receive any information and datatraversing the system 100. In one embodiment, the second network 135 mayinclude any number of additional servers in addition to the server 150.The second network 135 may also include and be connected to a mobilenetwork, a wireless network, an ethernet network, a satellite network, abroadband network, a cellular network, a private network, a cablenetwork, the Internet, an internet protocol network, a multiprotocollabel switching (MPLS) network, a content distribution network, or anycombination thereof. In certain embodiments, the second network 135 maybe multicast-enabled, broadcast-enabled, or a combination thereof. Inone embodiment, the second network 135 may be part of a singleautonomous system that is located in a particular geographic region, orbe part of multiple autonomous systems that span several geographicregions.

Once the request for content arrives at the second network 135, therequest for content from the client device 156 may then be transmittedfrom the second network 135 to the content transfer node 145, such asvia server 150. In certain embodiments, the content transfer node 145may be a device that resides at a boundary of the second network 135,and may also serve as an intermediary device between the second network135 and the first network 115. The content transfer node 145 may be anetwork server, a router, a gateway, a computer, a mobile device, or anyother suitable computing device. Additionally, the content transfer node145 may include a memory 146 that includes instructions, and a processor147 that executes the instructions from the memory 146 to performvarious operations that are performed by the content transfer node 145.The processor 147 may be hardware, software, or a combination thereof.

Notably, the content transfer node 145 may include a content serverfunction and a content receiver function. In certain embodiments, thecontent server function and the content receiver function may besoftware functions associated with one or more computer programsresiding on or accessible by the content transfer node 145. The contentserver function of the content transfer node 145 may be utilized by thesystem 100 to allocate a fixed bandwidth, such as a maximum bandwidth,for any particular transmission that occurs on the second network 135.As a result, the content server function is aware of the fixeddownstream bandwidth for transmitting content to clients of the secondnetwork 135, such as client device 156. The content server function mayprovide information indicating the allocated fixed bandwidth to thecontent receiver function of the content transfer node 145. As a result,the content receiver function may be made aware of the fixed downstreambandwidth for transmitting content to the clients of the second network135, such as client device 156.

The content receiver function of the content transfer node 145 may beconfigured to connect to the first network 115, which may be a contentprovider network associated with the content source device 102.Additionally, the content receiver function may serve as an adaptive bitrate client of the first network 115. The first network 115 may beutilized by the system 100 to distribute content or other datathroughout the system 100, and may be configured to have no specificbandwidth constraints for any end point in the first network 115. Forexample, the devices of the system 100 may connect to the first network115 with no specific receiver bandwidth constraints, and may not haveany content streaming constraints. The first network 115 may beconfigured to link the content source device 102 with the server 140,the server 160, the content transfer node 145, the second network 135,the server 150, the client device 156, the database 155, or anycombination thereof. Additionally, the first network 115 may beconfigured to transmit, generate, and receive any information and datatraversing the system 100. In one embodiment, the first network 115 mayinclude any number of additional servers in addition to the server 140,and may connect to any number of content source devices 102. The firstnetwork 115 may also include and be connected to a mobile network, awireless network, an ethernet network, a satellite network, a broadbandnetwork, a cellular network, a private network, a cable network, theInternet, an internet protocol network, a multiprotocol label switching(MPLS) network, a content distribution network, or any combinationthereof. In one embodiment, the first network 115 may be part of asingle autonomous system that is located in a given geographic region,or be part of multiple autonomous systems that span several geographicregions.

Based on the request for the content that is received at the contenttransfer node 145 and the awareness of the allocated and fixeddownstream bandwidth available for transmitting content to the clientdevice 156 of the second network 135, the content receiver function ofthe content transfer node 145 may request one or more content segmentsof the content from the content source device 102, such as via firstnetwork 115. Notably, when requesting the content segments, the contentreceiver function may transmit one or more requests for content segmentsthat are encoded at a bandwidth or bit rate that is equal to the lesserof (1) the allocated fixed bandwidth of the second network 135 and (2)the adaptive bit rate that is selected based on congestion conditionsexperienced on the first network 115. In certain embodiments, therequested content segments may be encoded at a bit rate that is lessthan the lesser of (1) the allocated fixed bandwidth of the secondnetwork 135 and (2) the adaptive bit rate that is selected based oncongestion conditions experienced on the first network 115. In oneembodiment, the congestion conditions may be measured based on thecongestion conditions that the content receiver function of the contenttransfer node 145 experiences when accessing the first network 115. Inanother embodiment, the selection of the adaptive bit rate based on thecongestion conditions experienced by the content receiver function maybe performed by the content transfer node 145 itself.

Once the one or more requests for the content segments are received bythe first network 115, the first network 115 may transmit the one ormore requests to the content source device 102. The content sourcedevice 102 may receive the one or more requests for the contentsegments, and encode content segments at a bandwidth or bit ratematching the bandwidth or bit rate specified in the requests sent by thecontent transfer node 145. The encoded content segments may betransmitted from the content source device 102 to the first network 115,which may then forward the encoded content segments to the contenttransfer node 145. The content receiver function, the content serverfunction, any other desired function, or any combination thereof of thecontent transfer node 145 may perform further processing on the encodedcontent segments to ensure greater resiliency when the content segmentsare sent over the second network 135, such as during a broadcast overthe air. As an example, if the second network 135 has a fixed bandwidthof 900 Kbps and the only available encoding from the first network 115is 1 Mbps, the content transfer node 145 may transcode or otherwisetransform the 1 Mbps content into a 900 Kbps version of the content. Inthis way, the content transfer node 145 may forward content conformingto the fixed bandwidth of the second network 135 even if the firstnetwork 115 does not have an encoding of the content that matches thefixed bandwidth of the second network 135 readily available.Additionally, the content receiver function may modify metadatacorresponding to the bit rate for the encoded content segments. Themetadata may include, but is not limited to, information describing thetype of content, information indicating the bit rate for the contentsegments, information indicating the fixed bandwidth of the secondnetwork 135, information indicating an internet protocol address of theclient device 156, information indicating an internet protocol addressof the content source device 102, any other information associated withthe content, or any combination thereof.

At this point, the modified metadata and the encoded content segmentsmay be forwarded by the content receiver function to the content serverfunction of the content transfer node 145. The content server functionmay then forward the metadata and the encoded content segments over theallocated and fixed bandwidth to the client device 156, such as viasecond network 135. The client device 156 may then receive the metadataand the encoded content segments, and a user of the client device 156may experience the content. The user of the client device 156 mayexperience the content in real-time as the content is streamed to theclient device 156 by the content server function.

Notably, as congestion conditions change in the first network 115, thecontent receiver function of the content transfer node 145 may adjustrequests for subsequent content segments of the content or requests fornew content based on a change in the congestion conditions. For example,if a congestion conditions increase on the first network 115, the fixedbandwidth of the second network 135 remains the same, and the congestionconditions indicate that only content segments encoded at a bit rateless than the fixed bandwidth may be provided by the first network 115,the content receiver function may request the subsequent contentsegments or the new content segments at the bit rate that is less thanthe fixed bandwidth that may be provided by the first network 115.However, if congestion conditions decrease on the first network 115 suchthat the content segments may be encoded at a bit rate higher than thefixed bandwidth of the second network 135, the content receiver functionmay request content segments that are encoded at the fixed bandwidth ofthe second network 135. As a result, the requests for content segmentsmay be adjusted in real time as congestion conditions experienced on thefirst network 115 change over time, and the client device 156 may notreceive content segments that are encoded at a bit rate greater than thefixed bandwidth of the second network 135. Thus, when a user receives astream of content segments based on the real-time adjustment of thecontent segments, the user will have a high-quality experience whenexperiencing the content.

When the first network 115 receives requests for different encodings ofcontent and content source device 102 provides the different encodingsof the content the first network 115, the first network may cache theencodings at the database 155 or on a device of the first network 115itself. Based on such caching, if subsequent requests for content aremade by the content transfer node 145 for encodings that have alreadybeen cached by the first network 115 of the database 155, the firstnetwork 115 or the database 155 may directly transmit the requestedencoded segments directly to the content transfer node 145 withouthaving to request the content source device 102 to provide the content.

Notably, any of the functionality and features of the system 100 may besupported and executed by using any combination of the servers 140 and150, and the content transfer node 145. In one embodiment, the server140 may include a memory 141 that includes instructions, and a processor142 that executes the instructions from the memory 141 to performvarious operations that are performed by the server 140. Furthermore,the server 150 may include a memory 151 that includes instructions, anda processor 152 that executes the instructions from the memory 151 toperform various operations that are performed by the server 150. Theprocessors 142 and 152 may be hardware, software, or a combinationthereof. In certain embodiments, the servers 140 and 150 may be networkservers, routers, gateways, computers, mobile devices, or any othersuitable computing device.

Additionally, the database 155 of the system 100 may be utilized tostore and relay information that traverses the system 100, cache contentthat traverses the system 100, store data about each of the devices inthe system 100, and perform any other typical functions of a database.In one embodiment, the database 155 may be connected to or reside withinthe first network 115. However, in certain embodiments, the database 155may be connected to or reside within the second network 135.Additionally, the database 155 may include a processor and memory or beconnected to a processor and memory to perform the various operationassociated with the database 155. In one embodiment, the database 155may be connected to the servers 140, 150 and 160, the content transfernode 145, the content source device 102, the client device 156, thefirst network 115, and the second network 135. The database 155 may alsostore information relating to the requests for content and metadatatraversing the system 100, data relating to the encoding of the content,different encoded versions of the content, bandwidth information for thefirst network 115 and the second network 135, client device 156information, content source device 102 information, and data responsiveto the requests traversing the system 100. Furthermore, the database 155may be configured to process queries sent to it by any device in thesystem 100.

Operatively, the system 100 may provide downstream bandwidth awareadaptive bit rate selection from an upstream network, such as firstnetwork 115, as shown in the following example scenario. In the examplescenario and referring also to FIG. 2, the user using client device 156may want to watch sports game content, such as a football game. Thefootball game may include both low action content and high actioncontent. In certain embodiments, low action content may be content thatrequires less bandwidth resources than the high action content, whichmay require significant bandwidth resources. For example, low actioncontent may occur when the players of the football game are not movingor there are not many other movements going on during the game. On theother hand, high action content may occur when a player is runningacross the football field and the background scenery is changingrapidly, or when there are multiple other movements going on during thegame. As shown in FIG. 2, high action content may be encoded at bitrates that are generally higher than low action content.

In order to watch the game, the user may transmit a request for thesports game content to the second network 135, which may then forwardthe request to the content transfer node 145. The content serverfunction of the content transfer node 145 may set a fixed and allocatedbandwidth for any transmission occurring on the second network 135. Forexample, the fixed and allocated bandwidth may be set at 900 Kpbs, suchas shown in FIG. 2. Additionally, the content server function maytransmit information identifying the fixed and allocated bandwidth forthe second network 135 to the content receiver function of the contenttransfer node 145, along with the request for the content. The contentreceiver function may then transmit a request for a content segment ofthe content that is encoded at a bit rate that is equal to or less thanthe lesser of (1) the allocated fixed bandwidth of the second network135 (in this case 900 Kbps) and (2) the adaptive bit rate that may beselected based on congestion conditions experienced on the first network115.

If congestion conditions indicate that there is light congestionexperienced on the first network 115, then the perhaps 1 Mbps may be theadaptive bit rate that could be selected by the content receiverfunction. However, since the fixed bandwidth is 900 Kbps and thecongestion conditions indicate that the adaptive bit rate selected couldbe 1 Mbps, then the content receiver function may send a request to thefirst network 115 for the content segment of the content that is encodedat a bit rate of 900 Kbps or less. This would prevent the user theclient device 156 from receiving content that is encoded at a bit ratethat is higher than the second network 135 can handle. However, ifcongestion conditions indicate that there is heavy congestionexperienced on the first network 115, then perhaps 500 Kbps would be thehighest adaptive bit rate that could be selected by the content receiverfunction. In this case, since the fixed bandwidth is 900 Kpbs and thecongestion conditions indicate that the adaptive bit rate selected wouldbe 500 Kbps, then the content receiver function may send a request tothe first network 115 for the content segment of the content that isencoded at a bit rate of 500 Kpbs or less.

Once the request for the content segment at the desired encoding is sentto the first network 115, the first network 115 can provide therequested content at the desired encoding if the content is alreadycached on the first network 115. However, if the content at the desiredencoding is not already available on the first network 115, the firstnetwork 115 may send a request for the desired encoding to the contentsource device 102. The content source device 102 may encode a contentsegment at the desired bit rate and transmit the encoded content to thefirst network 115, which may then transmit the encoded content segmentto the content transfer node 145. The content receiver function of thecontent transfer node 145 may modify metadata appropriate for thedesired bit rate for the content segment and forward the metadata to thecontent server function. The content server function may then forwardthe metadata and the requested encoded content to the client device 156subject to the fixed bandwidth of the second network 135.

As congestion conditions experienced on the first network 115, therequests for content segments associated with the content may beadjusted to obtain content segments that are encoded at bit ratesappropriate for the changes in congestion conditions. Eventually, thecontent source device 102 may create multiple encodings of the samesegment of content for the same duration of time. For example, as shownin FIG. 2, high action content may have content segments encoded at 500Kpbs, 800 Kpbs, and 1 Mpbs available, and low action content may havecontent segments encoded at 350 Kpbs, 400 Kpbs and 500 Kpbs available.In this example, the content segment duration for these segments may beone second, however, other content segments durations may be utilized.Continuing with the football game example, if a low action sequence isoccurring during the football game, the content receiver function mayselect the best possible encoding based on the 900 Kpbs fixed bandwidthfor the second network 135. In this case, the content receiver functionmay select the 500 Kpbs low action content encoding to be transmitted tothe client device 156 because that is the best encoding for the lowaction content available.

However, if a high action sequence is occurring during the footballgame, the content receiver function will determine that it shouldrequest the content segment encoded at the 800 Kpbs bit rate and not the1 Mpbs bit rate because the content segment encoded at the 1 Mpbs bitrate cannot be handled by the second network 135 and would cause a poorviewing experience for the user. Notably, the requests for the contentsegments may be adjusted in real-time as the content is being streamedto the client device 156, as the congestion conditions change withrespect to the first network 115, when the fixed bandwidth of the secondnetwork 135 is changed, as device capabilities of the client device 156change (e.g. screen size, resolution, internet connection, etc.), or anycombination thereof. Furthermore, the system 100 may include thecapabilities typically provided by a provisioning system or be connectedto a provisioning system that may be utilized to change the fixedbandwidth or other characteristics of the second network 135 based oncongestion conditions, network operator inputs, or any other desiredreason. The provisioning system or the system 100 itself may forward theinformation relating to the change in fixed bandwidth or othercharacteristics to the content transfer node 145 so that the contenttransfer node 145 is aware of the changes. Based on the updatedinformation relating to the second network 135, the content transfernode 145 may adjust the requests for content segments that the contenttransfer node 145 sends to the first network 115 so that contentsegments conforming to the change in the fixed bandwidth may be obtainedand sent to the client device 102. If content segments conforming to thechange in the fixed bandwidth are not available on the first network115, the content transfer node 145 may select the best availableencoding from the first network 115 and transcode or otherwise transformthe encoding from the first network 115 into an encoding that matchesthe new fixed bandwidth of the second network 135. Then, the appropriateencoded version of the content may be sent to the client device 102.

Notably, as shown in FIG. 1, the system 100 may perform any of theoperative functions disclosed herein by utilizing the processingcapabilities of server 160, the storage capacity of the database 155, orany other component of the system 100 to perform the operative functionsdisclosed herein. The server 160 may include one or more processors 162that may be configured to process any of the various functions of thesystem 100. The processors 162 may be software, hardware, or acombination of hardware and software. Additionally, the server 160 mayalso include a memory 161, which stores instructions that the processors162 may execute to perform various operations of the system 100. Forexample, the server 160 may assist in processing loads handled by thevarious devices in the system 100, such as, but not limited to,determining the fixed bandwidth available to transmit content to theclient device 156 on the second network 135, connecting to the firstnetwork 115 to obtain the content, requesting and receiving a contentsegment of the content that is encoded at a bandwidth that is less thanor equal to the lesser of the fixed bandwidth on the second network 135and an adaptive bit rate selected based on congestion conditionsassociated with the first network 115, transmitting the content segmentat the encoded bandwidth to the client device 156 on the second network135, and performing any other suitable operations conducted in thesystem 100 or otherwise. In one embodiment, multiple servers 160 may beutilized to process the functions of the system 100. The server 160 andother devices in the system 100, may utilize the database 155 forstoring data about the devices in the system 100 or any otherinformation that is associated with the system 100. In one embodiment,multiple databases 155 may be utilized to store data in the system 100.

Although FIG. 1 illustrates specific example configurations of thevarious components of the system 100, the system 100 may include anyconfiguration of the components, which may include using a greater orlesser number of the components. For example, the system 100 isillustratively shown as including an a content source device 102, aserver 140, a content transfer node 145, a server 150, a server 160, adatabase 155, and a client device 156. However, the system 100 mayinclude multiple content source devices 102, multiple content transfernodes 145, multiple servers 140, 150, and 160, multiple databases 155,multiple client devices 146, or any number of any of the othercomponents in the system 100. Furthermore, in one embodiment,substantial portions of the functionality and operations of the system100 may be performed by other networks and systems that are connected tosystem 100.

As shown in FIG. 3, an exemplary method 300 for downstream bandwidthaware adaptive bit rate selection from an upstream network, such asfirst network 115 is schematically illustrated, and may include, at step302, determining, by utilizing a content receiver function, a fixedbandwidth available to transmit content to a client device 156 on asecond network 135. In one embodiment, the determination may beperformed by the content transfer node 145, the server 160, anycombination thereof, or other appropriate device. At step 304, themethod 300 may include connecting, by utilizing the content receiverfunction, to the first network 115, which may be configured to have nospecific bandwidth constraints, but may be subject to congestionconditions. In one embodiment, the connection may be performed by thecontent transfer node 145, the server 160, any combination thereof, orother appropriate device. Then, at step 306, the method 300 may includerequesting a content segment of the content that is encoded at a firstbandwidth. The first bandwidth may be less than or equal to the lesserof the fixed bandwidth of the second network 135 and an adaptive bitrate that is selected based on a congestion condition that isexperienced on the first network 115. In one embodiment, the congestioncondition may be experienced by the content receiver function on thefirst network 115. In one embodiment, the request for the contentsegment may be performed by the content transfer node 145, the server160, any combination thereof, or other appropriate device.

At step 308, the method 300 may include determining if the fixedbandwidth of the second network 135 is less than the adaptive bit rateselected based on the congestion condition. In one embodiment, thedetermining may be performed by the content transfer node 145, theserver 160, any combination thereof, or other appropriate device. If thefixed bandwidth of the second network 135 is less than the adaptive bitrate selected based on the congestion condition, the method 300 mayinclude, at step 310, receiving the content segment encoded at the fixedbandwidth, the fixed bandwidth in this case being the first bandwidth.In one embodiment, the receiving may be performed by the contenttransfer node 145, the server 160, any combination thereof, or otherappropriate device. If, however, the fixed bandwidth of the secondnetwork 135 is more than the adaptive bit rate selected based on thecongestion condition, then the method 300 may include, at step 312,receiving the content segment encoded at the adaptive bit rate. In thisscenario, the first bandwidth may be the adaptive bit rate. In oneembodiment, the receiving may be performed by the content transfer node145, the server 160, any combination thereof, or other appropriatedevice. At step 314, the method 300 may include transmitting the contentsegment at the first bandwidth to the client device 156 of the secondnetwork 135.

It is important to note that the methods described above may incorporateany of the functionality, devices, and/or features of the system 100 andsubsystems described above, or otherwise, and are not intended to belimited to the description or examples provided herein. In oneembodiment, the system 100 and methods described herein may furtherinclude utilizing any of the various components described in the system100 to perform the operative functions disclosed herein.

Referring now also to FIG. 4, at least a portion of the methodologiesand techniques described with respect to the exemplary embodiments ofthe system 100 can incorporate a machine, such as, but not limited to,computer system 400, or other computing device within which a set ofinstructions, when executed, may cause the machine to perform any one ormore of the methodologies or functions discussed above. The machine maybe configured to facilitate various operations conducted by the system100. For example, the machine may be configured to, but is not limitedto, assist the system 100 by providing processing power to assist withprocessing loads experienced in the system 100, by providing storagecapacity for storing instructions or data traversing the system 100, orby assisting with any other operations conducted by or within the system100.

In some embodiments, the machine may operate as a standalone device. Insome embodiments, the machine may be connected (e.g., using firstnetwork 115, second network 135, another network, or a combinationthereof) to and assist with operations performed by other machines, suchas, but not limited to, the content source device 102, the server 140,the content transfer node 145, the server 150, the database 155, theclient device 156, the server 160, or any combination thereof. Themachine may be connected with any component in the system 100. In anetworked deployment, the machine may operate in the capacity of aserver or a client user machine in a server-client user networkenvironment, or as a peer machine in a peer-to-peer (or distributed)network environment. The machine may comprise a server computer, aclient user computer, a personal computer (PC), a tablet PC, a laptopcomputer, a desktop computer, a control system, a network router, switchor bridge, or any machine capable of executing a set of instructions(sequential or otherwise) that specify actions to be taken by thatmachine. Further, while a single machine is illustrated, the term“machine” shall also be taken to include any collection of machines thatindividually or jointly execute a set (or multiple sets) of instructionsto perform any one or more of the methodologies discussed herein.

The computer system 400 may include a processor 402 (e.g., a centralprocessing unit (CPU), a graphics processing unit (GPU, or both), a mainmemory 404 and a static memory 406, which communicate with each othervia a bus 408. The computer system 400 may further include a videodisplay unit 410, which may be, but is not limited to, a liquid crystaldisplay (LCD), a flat panel, a solid state display, or a cathode raytube (CRT). The computer system 400 may include an input device 412,such as, but not limited to, a keyboard, a cursor control device 414,such as, but not limited to, a mouse, a disk drive unit 416, a signalgeneration device 418, such as, but not limited to, a speaker or remotecontrol, and a network interface device 420.

The disk drive unit 416 may include a machine-readable medium 422 onwhich is stored one or more sets of instructions 424, such as, but notlimited to, software embodying any one or more of the methodologies orfunctions described herein, including those methods illustrated above.The instructions 424 may also reside, completely or at least partially,within the main memory 404, the static memory 406, or within theprocessor 402, or a combination thereof, during execution thereof by thecomputer system 400. The main memory 404 and the processor 402 also mayconstitute machine-readable media.

Dedicated hardware implementations including, but not limited to,application specific integrated circuits, programmable logic arrays andother hardware devices can likewise be constructed to implement themethods described herein. Applications that may include the apparatusand systems of various embodiments broadly include a variety ofelectronic and computer systems. Some embodiments implement functions intwo or more specific interconnected hardware modules or devices withrelated control and data signals communicated between and through themodules, or as portions of an application-specific integrated circuit.Thus, the example system is applicable to software, firmware, andhardware implementations.

In accordance with various embodiments of the present disclosure, themethods described herein are intended for operation as software programsrunning on a computer processor. Furthermore, software implementationscan include, but not limited to, distributed processing orcomponent/object distributed processing, parallel processing, or virtualmachine processing can also be constructed to implement the methodsdescribed herein.

The present disclosure contemplates a machine readable medium 422containing instructions 424 so that a device connected to the firstnetwork 115, the second network 135, other network, or a combinationthereof, can send or receive voice, video or data, and to communicateover the first network 115, second network 135, other network, or acombination thereof, using the instructions. The instructions 424 mayfurther be transmitted or received over the first network 115, secondnetwork 135, other network, or a combination thereof, via the networkinterface device 420.

While the machine-readable medium 422 is shown in an example embodimentto be a single medium, the term “machine-readable medium” should betaken to include a single medium or multiple media (e.g., a centralizedor distributed database, and/or associated caches and servers) thatstore the one or more sets of instructions. The term “machine-readablemedium” shall also be taken to include any medium that is capable ofstoring, encoding or carrying a set of instructions for execution by themachine and that cause the machine to perform any one or more of themethodologies of the present disclosure.

The terms “machine-readable medium” or “machine-readable device” shallaccordingly be taken to include, but not be limited to: memory devices,solid-state memories such as a memory card or other package that housesone or more read-only (non-volatile) memories, random access memories,or other re-writable (volatile) memories; magneto-optical or opticalmedium such as a disk or tape; or other self-contained informationarchive or set of archives is considered a distribution mediumequivalent to a tangible storage medium. The “machine-readable medium”or “machine-readable device” may be non-transitory. Accordingly, thedisclosure is considered to include any one or more of amachine-readable medium or a distribution medium, as listed herein andincluding art-recognized equivalents and successor media, in which thesoftware implementations herein are stored.

The illustrations of arrangements described herein are intended toprovide a general understanding of the structure of various embodiments,and they are not intended to serve as a complete description of all theelements and features of apparatus and systems that might make use ofthe structures described herein. Other arrangements may be utilized andderived therefrom, such that structural and logical substitutions andchanges may be made without departing from the scope of this disclosure.Figures are also merely representational and may not be drawn to scale.Certain proportions thereof may be exaggerated, while others may beminimized. Accordingly, the specification and drawings are to beregarded in an illustrative rather than a restrictive sense.

Thus, although specific arrangements have been illustrated and describedherein, it should be appreciated that any arrangement calculated toachieve the same purpose may be substituted for the specific arrangementshown. This disclosure is intended to cover any and all adaptations orvariations of various embodiments and arrangements of the invention.Combinations of the above arrangements, and other arrangements notspecifically described herein, will be apparent to those of skill in theart upon reviewing the above description. Therefore, it is intended thatthe disclosure not be limited to the particular arrangement(s) disclosedas the best mode contemplated for carrying out this invention, but thatthe invention will include all embodiments and arrangements fallingwithin the scope of the appended claims.

The foregoing is provided for purposes of illustrating, explaining, anddescribing embodiments of this invention. Modifications and adaptationsto these embodiments will be apparent to those skilled in the art andmay be made without departing from the scope or spirit of thisinvention. Upon reviewing the aforementioned embodiments, it would beevident to an artisan with ordinary skill in the art that saidembodiments can be modified, reduced, or enhanced without departing fromthe scope and spirit of the claims described below.

We claim:
 1. A system for providing downstream bandwidth aware adaptivebit rate selection, the system comprising: a memory that storesinstructions; a processor that executes the instructions to performoperations, the operations comprising: determining, by utilizing acontent receiver function of a content transfer node, a fixed bandwidthavailable to transmit content to a client on a second network, whereinthe fixed bandwidth is allocated by a content server function;connecting, by utilizing the content receiver function, to a firstnetwork to obtain the content, wherein the first network has no specificbandwidth constraints, wherein the content transfer node serves as anintermediary between the first network and the second network;receiving, from the first network, a content segment of the content thatis encoded at a first bandwidth, wherein the first bandwidth is lessthan or equal to the lesser of the fixed bandwidth available to transmitthe content to the client on the second network and a first adaptive bitrate that is selected based on a congestion condition that the contentreceiver function of the content transfer node experiences on the firstnetwork while serving as an adaptive bit rate client of the firstnetwork; modifying first metadata corresponding to a bit rate for thecontent segment that is encoded at the first bandwidth, wherein thefirst metadata that is modified comprises information describing acontent type of the content segment, information indicating the fixedbandwidth of the second network, and information indicating an internetprotocol address of a content source of the content segment;transmitting, with the first metadata, the content segment at the firstbandwidth to the client on the second network; and adjusting requestsfor subsequent content segments of the content as a device capability ofthe client changes, wherein the device capability comprises a resolutioncapability of the client.
 2. The system of claim 1, wherein theoperations further comprise receiving a next content segment of thecontent that is encoded at a second bandwidth, wherein the secondbandwidth is the lesser of the fixed bandwidth available to transmit thecontent to the client on the second network and a second adaptive bitrate that is selected based on a change in the congestion condition thatthe content receiver function experiences on the first network.
 3. Thesystem of claim 2, wherein the operations further comprise modifying, byutilizing the content receiver function, second metadata associated withthe next content segment, wherein the second metadata corresponds to thesecond bandwidth.
 4. The system of claim 3, wherein the operationsfurther comprise transmitting, by utilizing the content server function,the next content segment and the second metadata associated with thenext content segment to the client at the second bandwidth.
 5. Thesystem of claim 1, wherein the operations further comprise receiving arequest for the content from the client on the second network.
 6. Thesystem of claim 1, wherein low action content of the content is encodedat a lower rate than high action content of the content.
 7. The systemof claim 1, wherein the operations further comprise transcoding thecontent segment at the content transfer node after receiving the contentsegment.
 8. The system of claim 1, wherein the operations furthercomprise adjusting the requests for the subsequent content segments ofthe content based on a change in the congestion condition.
 9. The systemof claim 1, wherein the first network is associated with a contentprovider and the second network is associated with a network provider ofthe client.
 10. A method for providing downstream bandwidth awareadaptive bit rate selection, the method comprising: determining, byutilizing a content receiver function of a content transfer node, afixed bandwidth available to transmit content to a client on a secondnetwork, wherein the fixed bandwidth is allocated by a content serverfunction; connecting, by utilizing the content receiver function, to afirst network to obtain the content, wherein the first network has nospecific bandwidth constraints, wherein the content transfer node servesas an intermediary between the first network and the second network;receiving, from the first network, a content segment of the content thatis encoded at a first bandwidth, wherein the first bandwidth is lessthan or equal to the lesser of the fixed bandwidth available to transmitthe content to the client on the second network and a first adaptive bitrate that is selected based on a congestion condition that the contentreceiver function of the content transfer node experiences on the firstnetwork while serving as an adaptive bit rate client of the firstnetwork, wherein the content segment is received by utilizinginstructions from memory that are executed by a processor; modifyingfirst metadata corresponding to a bit rate for the content segment thatis encoded at the first bandwidth, wherein the first metadata that ismodified comprises information describing a content type of the contentsegment, information indicating the fixed bandwidth of the secondnetwork, and information indicating an internet protocol address of acontent source of the content segment; transmitting, with the firstmetadata, the content segment at the first bandwidth to the client onthe second network; and adjusting requests for subsequent contentsegments of the content as a device capability of the client changes,wherein the device capability comprises a resolution capability of theclient.
 11. The method of claim 10, further comprising receiving a nextcontent segment of the content that is encoded at a second bandwidth,wherein the second bandwidth is the lesser of the fixed bandwidthavailable to transmit the content to the client on the second networkand a second adaptive bit rate that is selected based on a change in thecongestion condition that the content receiver function experiences onthe first network.
 12. The method of claim 11, further comprisingmodifying, by utilizing the content receiver function, second metadataassociated with the next content segment, wherein the second metadatacorresponds to the second bandwidth.
 13. The method of claim 12, furthercomprising transmitting, by utilizing the content server function, thenext content segment and the second metadata associated with the nextcontent segment to the client at the second bandwidth.
 14. The method ofclaim 10, further comprising receiving a request for the content fromthe client on the second network.
 15. The method of claim 10, whereinlow action content of the content is encoded at a lower rate than highaction content of the content.
 16. The method of claim 10, furthercomprising transcoding the content segment at the content transfer nodeafter receiving the content segment.
 17. The method of claim 10, furthercomprising adjusting the requests for the subsequent content segments ofthe content based on a change in the congestion condition.
 18. Themethod of claim 10, further comprising requesting a next content segmentof the content that is encoded at a second bandwidth.
 19. Acomputer-readable device comprising instructions, which when loaded andexecuted by a processor, cause the processor to perform operations, theoperations comprising: determining, by utilizing a content receiverfunction of a content transfer node, a fixed bandwidth available totransmit content to a client on a second network, wherein the fixedbandwidth is allocated by a content server function; connecting, byutilizing the content receiver function, to a first network to obtainthe content, wherein the first network has no specific bandwidthconstraints, wherein the content transfer node serves as an intermediarybetween the first network and the second network; receiving, from thefirst network, a content segment of the content that is encoded at afirst bandwidth, wherein the first bandwidth is less than or equal tothe lesser of the fixed bandwidth available to transmit the content tothe client on the second network and a first adaptive bit rate that isselected based on a congestion condition that the content receiverfunction of the content transfer node experiences on the first networkwhile serving as an adaptive bit rate client of the first network;modifying first metadata corresponding to a bit rate for the contentsegment that is encoded at the first bandwidth, wherein the firstmetadata that is modified comprises information describing a contenttype of the content segment, information indicating the fixed bandwidthof the second network, and information indicating an internet protocoladdress of a content source of the content segment; transmitting, withthe first metadata, the content segment at the first bandwidth to theclient on the second network; and adjusting requests for subsequentcontent segments of the content as a device capability of the clientchanges, wherein the device capability comprises a resolution capabilityof the client.
 20. The computer-readable device of claim 19, wherein theoperations further comprise receiving a next content segment of thecontent that is encoded at a second bandwidth, wherein the secondbandwidth is the lesser of the fixed bandwidth available to transmit thecontent to the client on the second network and a second adaptive bitrate that is selected based on a change in the congestion condition thatthe content receiver function experiences on the first network.